package main

import (
	"fmt"
	"software/core"
	"software/flag"
	"software/global"
	"software/routers"
	"software/utils"
)

func main() {

	//读取配置文件

	core.InitConf()

	fmt.Println(global.Config)
	//初始化日志

	// 初始化日志

	global.Log = core.InitLogger()

	global.Log.Info("初始化数据库连接...")
	global.DB = core.InitGorm()
	if global.DB != nil {
		global.Log.Info("数据库连接初始化成功")
	} else {
		global.Log.Error("数据库连接初始化失败")
		return
	}

	// 初始化MongoDB连接
	global.Log.Info("初始化MongoDB连接...")
	err := core.InitMongoDB()
	if err != nil {
		global.Log.Errorf("MongoDB连接初始化失败: %v", err)
		return
	}

	go utils.StartBanCheckTask()
	global.Redis = core.ConnectRedis()

	// 解析命令行参数
	global.Log.Info("解析命令行参数...")
	flag.Parse()
	//option :=
	//global.Log.Infof("解析到的命令行选项: %+v", option)

	// 检查是否需要停止 Web 服务
	//if flag.IsWebStop(option) {
	//	global.Log.Info("检测到停止 Web 服务的标志，执行相应操作...")
	//	flag.SwitchOption(option)
	//	global.Log.Info("操作完成，退出程序")
	//	return
	//}

	flag.MakeMigrations()

	// 初始化路由
	//global.Log.Info("初始化路由...")
	router := routers.InitRouter()
	//global.Log.Info("路由初始化完成")

	//service.CreateUser()
	//service.QueryUserById(5)

	// 获取服务监听地址
	addr := global.Config.System.Addr()
	//global.Log.Infof("服务将在地址 %s 上启动", addr)

	//global.Log.Infof("gvb server running at %v", addr)

	// 启动服务

	router.Run(addr)

}
